package com.mdl.common.lock.redsession;

public interface DistributedLock {
    /**
     * 对lockname进行加锁，过期自动解锁，无需调用unlock方法手动解锁
     *
     * @param lockname 锁名称
     * @param expire 锁过期时间，单位毫秒
     */
    void lock(String lockname, int expire);

    /**
     * 尝试对lockname进行加锁，支持锁等待，过期自动解锁，无需调用unlock方法手动解锁
     *
     * @param lockname 锁名称
     * @param waiting 锁等待时间，单位毫秒
     * @param expire 锁过期时间，单位毫秒
     * @return
     */
    boolean tryLock(String lockname, int waiting, int expire);

    /**
     * 根据name对进行解锁操作
     *
     * @param lockname 锁名称
     */
    void unlock(String lockname);

}
